package com.ipbd.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ipbd.domain.UserInfo;
import com.ipbd.mapper.UserInfoMapper;
import com.ipbd.service.UserInfoService;
import com.ipbd.utils.R;
import com.ipbd.utils.UserHolder;
import com.ipbd.vo.UserInfoVO;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;

/**
* @author 86172
* @description 针对表【user_info(用户信息表)】的数据库操作Service实现
* @createDate 2024-03-06 20:53:48
*/
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {

    /**
     * 添加用户基本信息
     * @param userInfo
     * @return
     */
    @Override
    public R saveUserInfo(UserInfo userInfo) {
        // 获取用户id
        Integer id = UserHolder.getUser().getId();
        if (id == null) {
            return R.error("用户不存在，请登录");
        }
        UserInfo newUserInfo = new UserInfo();
        // copy属性
        BeanUtil.copyProperties(userInfo, newUserInfo);
        // 设置对应的user_id
        newUserInfo.setUserId(id);
        // 添加用户基本信息
        save(newUserInfo);
        // 提交
        return R.ok("提交成功");
    }

    /**
     * 修改用户基本信息
     * @param userInfo
     * @return
     */
    @Override
    public R updateUserInfo(UserInfo userInfo) {
        // 获取用户id
        Integer id = UserHolder.getUser().getId();
        if (id == null) {
            return R.error("用户不存在，请登录");
        }
        // 获取对应用户
        UserInfo user = query().eq("user_id", id).one();
        BeanUtil.copyProperties(userInfo, user);
        // 复制完属性后user_id会变为空，应重新设置
        user.setUserId(id);
        update(user, null);
        return R.ok("修改信息成功");
    }

    /**
     * 回显用户基本信息
     * @return
     */
    @Override
    public R selectUserInfo() {
        Integer id = UserHolder.getUser().getId();
        // 获取对应用户
        UserInfo userInfo = query().eq("user_id", id).one();
        // 创建 SimpleDateFormat 实例进行日期格式化
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        // 日期转换
        UserInfoVO userInfoVO = BeanUtil.copyProperties(userInfo, UserInfoVO.class);
        userInfoVO.setDateBirth(formatter.format(userInfo.getDateBirth()));
        return R.ok().put("userInfo", userInfoVO);
    }
}




